Terraform でEC2 Instance Connect Endpointを作成してみました。
こんにちは、クラスメソッドのヌヌです。
EC2 Instance Connect Endpointを作成できるTerraformのアップデートがありましたので、やってみました。
TerraformのEIC Endpointについて
事前確認
EC2 Instance Connect EndpointはAWS Provider 5.6.0以上のバージョンから作成可能です。 そのため、Terraformで EIC Endpointを作成する前、Providerのバージョンを確認してください。
中身について
EIC Endpointのリソースタイプは aws_ec2_instance_connect_endpoint
です。次のようにコードを作成できます。
# main.tf resource "aws_ec2_instance_connect_endpoint" "eic_test" { subnet_id = aws_subnet.test_private_subnet.id # 必須 security_group_ids = [aws_security_group.ssh_eic.id] # オブション preserve_client_ip = true # オブション tags = { # オブション Name = "名前" } }
subnet_id
(必須):必須入力項目です。エンドポイントを作成するサブネットIDを定義します。security_group_ids
:エンドポイントに適用するセキュリティグループです。何も定義しない場合、VPCのデフォルトセキュリティグループが適用されます。preserve_client_ip
:クライアントIPアドレスを保存可否を定義します。デフォルトはtrue です。tag
:タグを作成します。
やってみました
コード作成
terraform { required_providers { aws = ">= 5.6.0" } } provider "aws" { region = "ap-northeast-1" } resource "aws_vpc" "test" { cidr_block = "172.31.0.0/16" } resource "aws_subnet" "test_private_subnet" { vpc_id = aws_vpc.test.id cidr_block = "172.31.0.0/24" availability_zone = "ap-northeast-1a" } resource "aws_route_table" "private_rt" { vpc_id = aws_vpc.test.id } resource "aws_ec2_instance_connect_endpoint" "test_eic" { subnet_id = aws_subnet.test_private_subnet.id # 必須 security_group_ids = [aws_security_group.ssh_eic.id] # オブション preserve_client_ip = true # オブション tags = { # オブション Name = "eic-test" } } # EIC Endpointのセキュリティグループ resource "aws_security_group" "ssh_eic" { name = "test-eic-sg" description = "EIC Security Group For Test" vpc_id = aws_vpc.test.id ingress { from_port = 22 to_port = 22 protocol = "tcp" cidr_blocks = ["x.x.x.x/x"] } egress { from_port = 22 to_port = 22 protocol = "tcp" cidr_blocks = ["0.0.0.0/0"] } } resource "aws_instance" "test" { ami = "ami-0cfc97bf81f2eadc4" instance_type = "t2.micro" subnet_id = aws_subnet.test_private_subnet.id security_groups = [aws_security_group.ssh_ec2.id] } resource "aws_security_group" "ssh_ec2" { name = "test-ec2-sg" description = "EC2 Instance Security Group For Test" vpc_id = aws_vpc.test.id ingress { from_port = 22 to_port = 22 protocol = "tcp" cidr_blocks = ["x.x.x.x/x"] } egress { from_port = 22 to_port = 22 protocol = "tcp" cidr_blocks = ["0.0.0.0/0"] } }
デプロイ
次のコマンドを実行して作成したTerraformコードをデプロイします。
$ terraform init $ terraform plan $ terraform apply
接続確認
デプロイが完了できたら次のコマンドを入力して、接続を確認します。
$ aws ec2-instance-connect ssh --instance-id インスタンスID --connection-type eice
最後に
EIC Endpointがリリーズされてからあまり経ってないですがすぐTerraformで使えることができてるTerraformの速度に驚きました。
EIC EndpointもTerraformで作成しましょう!